{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "a585cd20",
   "metadata": {},
   "source": [
    "黑天鹅事件,造成股价大幅下跌,我们统计第2天的涨幅情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "dba1d31b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "总次数: 52\n",
      "涨幅大于零的次数: 26，概率: 0.5000\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAABjeklEQVR4nO3deZyNdeP/8feZfWHGzJB1MCRLSDEaJJK0oBIq8W2VdKeNtNCikrUsleUWUZI7WUKRukPqJm67MUPR2HdmY2bObJ/fH35zbseMcWbMNcfMvJ6Px/Woa/18Ptd8zpj3ua7rc9mMMUYAAAAAAKDIebi7AgAAAAAAlFaEbgAAAAAALELoBgAAAADAIoRuAAAAAAAsQugGAAAAAMAihG4AAAAAACxC6AYAAAAAwCKEbgAAAAAALELoBoBSYvjw4fr444/dVv6pU6cuu01KSoqSkpJcPua///1vrVix4kqq5SQ+Pl79+/fX77//XmTHvJzvvvuuSNtQ0q1du1YPPvig/vjjjzzXz507V3PnzlVaWlox1+zyXOnj6enpSkhIUHZ2tkvH3LFjh7766iuXt78Sx48f16FDh67oGDt27JAxpohqBABlg83wmxMASpTY2FhJUsOGDZ2W16hRQzVr1tTatWudln///ffy8/NTx44dcx3r119/1c8//ywfHx95eOT/PWx2drbsdrsCAwM1ZMgQp3VLlizRU089pYULF6pt27b6+++/lZCQID8/P3l4eMjHx0d16tTR008/rRUrVujAgQOSpIyMDHl6el6y7Lvvvlt2u10rV650LJs5c2a++6SlpcnHx0ePPvpornXHjh1T1apVNWvWLD322GOSpMOHD+vdd9911PVitWrV0ssvv+x0HkaPHq2GDRvq/vvvz/ecSdK1116rihUrXjJkljXdu3fX+vXrtXr1al177bWSzveDjIwM+fv7q0GDBsrIyNDKlStVrlw5SVJmZqaysrJUvXr1QpU5efJkPffccwXaZ//+/apZs6Zj/tChQ2ratKnee+89DRgwQKdOndK+ffvk5+cnLy8vSed/1t9884369OmjvXv3qk6dOpIku90uX1/fPMsZPXq0hgwZoqysLMeyH3/8UcePH5enp2ee+2RkZCg1NVX/93//p/Lly+e5zYIFC/TJJ5/o008/VePGjWW321WjRg117NhRc+fOLdC5yJGQkKBKlSrpxhtv1Lp16y5ZPwCAMy93VwAA4LqjR48qKipKYWFhWr9+vSpVquRY5+fnJ29vb6ftT5w4oSeeeEKJiYmKjo7Wdddd57R+06ZNGj9+vHx8fJz+gE5JSVFqaqrCwsIcy7KysmS321W1atVcoTswMFCenp7q2LGjpk6dqvXr1+uf//ynY33Dhg0VExMjf39/+fv7O5Z/++23euedd7Rq1SrVqFEjV3sDAgJyBeGvv/5akvL8g98Yo7S0NIWGhjpCtzFGZ8+elb+/v/z8/CRJPj4+SktLU3p6urKysnTq1Cn5+flp0aJFqlmzplq1aiVJWrp0qZo3b+4Uuo8cOaKJEycqLS1NW7duVe3atXPV40IVKlSQj49Pvtu4ym63a//+/QoODlblypWL5JgFdfDgQYWHhxdq37Vr12rhwoWSpHr16jmt6969ux5//HH9+eefkqSIiAin9XXr1tWePXuclhlj9Pfff8vT0zPfn0NOX/niiy/UsmXLfOv4xhtv6LvvvnME6RyZmZmqW7eunn/+eUVHR6tt27bq06eP0zbHjx939O+c/x46dEg33HCDvvrqK9199925ygsICHD0yxy//PKLNm/enOvznCM9PV2pqanq1q1bnqHbGKPhw4dr3759qlKliiTJ19dXL730kt566y09//zzat26db7nIS/ffvutMjMz1a9fPwI3ABSEAQCUKBMmTDCSTJs2bUxGRoZjef369U27du0c85mZmaZz585Gkpk6dWqByhg6dKiR5HT8yzl27Ji58847zaRJk0xKSopJS0sz2dnZ5sUXXzTNmjUzxhgzaNAgc/311zv2adu2rYmKinI6zoEDB8zIkSPNyJEjTePGjU2DBg0c8xs3bixQO4wx5ujRo0ZSnlPlypUd26WmphoPDw/z4YcfOpY1aNDAPPzww7mOuXLlSmOz2Uzbtm1NVlaWSUlJMXa73WRnZ+faNioqyrRr185kZWWZtLQ0c+7cuQK3ITMz07z66qsmICDAUfe2bduavXv3FvhYxhizf/9+07NnTxMaGmoqVqxo3njjDZOZmelYn56ebh555BETFBRkBg4c6FiekZFhunbtWqgyk5OTTf369U3Pnj1NbGysadu2ralXr56JjY01sbGxZt++feb666837dq1MydPnjT9+vUzfn5+Zvv27ebw4cNm//79Tsf7+uuvzTXX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ybV+2LBhGjdunCTluf6mm27KtWzo0KEaPny4S+UDQFlB6AaAEiSvP3wv5/fff5ekXK9AutTz4Lt379bRo0fl7e2tVatWaeLEiS5dfQ4NDVWvXr0kSWfOnFFAQIDjmdeMjAzVrVtXR48e1alTp3Tttddq+PDhuvPOO9WkSRPZ7XZH/S4XRu69914tXbo0322eeOIJff755475H374Qf7+/o7nhi/k5eWla665RrVq1crzWL1799ZXX30l6fzzsGlpafL29taTTz6pZcuWOW338ccf6/PPP9dbb72VZ/i7UvHx8dq8ebPi4+NVpUoVnTt3rkD75wTYwMDAXOsCAgKUkJAgSQoLC1N0dLR27typZs2a6cUXX1SvXr10/fXXKy4uTtOmTcv1uixXTJs2Ta+//vol1+f1LvmceufVB9PT07VlyxYdOHBA/v7+SklJyXP/nD61atWqywbSxx9/XF988UWe6zw9PfX0009LOt/HpfNXxvfs2SNfX1/Vrl3bUYeIiAgtWLBA/v7+uvfee2W3251el5dfPx83blyez4FfKCIiQn///bckqVWrVpo6dapuvfVWValSRUuXLpWfn5++//57TZw4UTNmzHD6omXnzp0aMGCAwsPD1alTJ+3atUsVKlRwrE9PT1f//v01c+ZM3X333Vq+fLmWLFnieM3bhg0b9Nhjj2nRokVq0KCBY7+GDRvm+Rw5AJR1rt3DBwC4KmRlZens2bOy2+35XgG8EhMmTJC3t7cmT56snTt3FuhqamxsrKTztz+fPXtW9erVU7169TR9+nSNGTNGrVu31jXXXKNhw4apYcOGqlmzpkaNGqXx48c7QsHl2uXn56cOHTooLi5OcXFxatasmR555BHHfJUqVXL94T9u3Dh169bNEXSOHDmir7/+WjNnzlRSUpJj+7lz52rVqlWO6brrrnM8KyydD+g5t6lLzrcI22w2xzOu+T1vfyXatGmjP/74Q9u2bVNycrLuvPPOSwbNvOTc7ZDXOTb//x3nF24bGRmphIQEpaSkaOnSpfLx8dFzzz132UB4KYmJifL395c5//YUx5TTx+Li4nKtM8Zc8kufsLAw/fTTT9q/f79atGihPn36aMOGDXm2rajs3r1b2dnZOn36tCTpvvvuU7169XT//ffrrbfeUu/evSWdH+ztnnvuUVZWlkaMGKGPPvrI6bb4/Pq5n5+fAgICHH26f//+qlOnjmP+/vvvz9XH+/btq+uuu05BQUHq0qWLOnbs6NimZ8+eat++vWOqUaOGJDkeTbgwcEdHRysyMlIzZ87U6NGj9cILL0g6H/IbNGigBg0aOAbuq127tmNZTvi+8PMCADiP0A0AJchvv/2m8uXLOwaistlsl53effddl4+/a9cuzZgxQz169NBTTz2lli1b6sUXX8x3tOQcZ8+eVfPmzbVw4UJ9+OGHysjIUEZGhmrVquV0hS9H69attXr16lzLLxe6PT095e/vr9q1a6t27dry9fVV+fLlHfOenp65ruonJyerWbNmjvAWHR2t5557Tv3799fJkycd20dFRTmFk/LlyztGU3dFt27dtHfv3nwHsSoKjRs31rBhw3TixAmtXLnS5f2qVq0qm82m/fv351p38uRJp1ulc0yaNEnPPfecYmJidMcdd+jxxx/XiRMnHKGzII4ePaoqVapoz549TtOxY8cknR+47+J1OdOFXwhcrGLFipoyZYqysrLyfM6/MKH7Uvs89dRTevnll9W1a1dHH3/00Ucv2cd37dqV5y31+fXznM92Tp8ODg6Wt7e3Yz4wMDBXH8/Lhg0bFBERkWtchZw3C+SE7wuFhoaqQoUKmjlzZqEGSivMoHUAUNpxezkAlCDXXXedpkyZIh8fH/n4+Lj0h/f8+fO1YMGCy2537tw5PfTQQ/Lw8NCwYcNks9k0depU3XzzzerRo4d+/fXXfJ/lXbZsmdLS0tSyZUt5eHg4XZ3Mq56dOnXStGnTtHnzZqdnQy8OIxkZGZo+fbpjJHUPDw/98MMPTn/cr1+/Xv/85z8d8xdfGT1y5IjTAFudOnVyPNMtnR9g61IKMjq4p6dnriBz4sQJhYeHu3yMi23dulVff/21hg8f7vQFQKVKlSSdPz+u8vPzU8OGDR2PHOQwxmjjxo1Or0uTzo/GHR0drWHDhik1NVV+fn6OcJmSkqKwsLACteXAgQOKi4tz3KZ8sfxu/d66datuuOEGnT59WuPHj1fv3r2dRg8vzPnIT16h+9ixY1q3bp2effZZ2Ww2p0ci8urjt99+uzw8PDRnzhwNHDjQad3F/XzZsmVas2aNWrVqJQ8PD507dy5XgL1w/oYbbsi3/qdOndLatWsdV94vboekPAfhq1at2mUHWAQAFAxXugGgBKlWrZr69++vJ598Un369NHDDz982alx48aXPe6ZM2fUqVMnbd++XaNHj3aMyH3jjTdqzJgxWrdunXr27JnvrcwLFizQrbfemufVs7y0bNlS5cuX18SJE52WXxyavL29NX36dGVkZOiGG26QzWbT7bffroMHD+rgwYO68cYb1adPH8d8lSpVnPZPTEzUkSNHtGbNGscVvovlvJJq79692rVrl2NKS0tTZmZmnvvkd6Xyv//9r+677z7dcsst+uuvv/J9pdjlZGdna+zYsbnet75w4UJ5eHiodevWBTreAw88oNWrV2v79u2OZfPnz1d8fHyuUbG/+OILxzuvAwMDde7cOcdz5AV937h0fuC8nKvDGRkZ2rp1q2rXru24wr5nzx6n9RkZGfrss88k/S8gBgUFaerUqXrllVecgvHChQsl5T3uQWEexchrn0WLFsnf3z/XaPKX4uXlpfbt2+vTTz/N88ukC61Zs0axsbFq3ry5bDabAgICHH36H//4h+rWreuYd+VOivHjx8tut+d6Z7l0/kp3cHBwns/2X8zVLzFynnF39e0DAFCW8JsRAEqQxMREpaSkOL23+EqtXLlSzZo109q1a/X666/rxRdfdFr/0ksvaciQIVq8eLGaN2+uVatW5TpGQkKCvv/+e8dAapfz4YcfqlevXo5XbF0YAKtUqaKhQ4c6PWf6ySefaO/evWratKmysrLk5+enGjVqqEaNGvLx8VFgYKBj/uIr0//5z39kjJGvr6/atGmjuLi4XPXJ+TKhY8eOatiwoWPauXNnnl80zJ8/X998841OnDjhNDJ6jmbNmumPP/7QiRMn9Oijj2rYsGEunZe83HTTTerTp4/eeOMNPfbYY5o6daoeffRRzZw5U6+99poqV67s2Parr77Sb7/9lu/xBgwYoLCwMN17771asGCBPv/8c/Xr10+VKlVyuipqjNGyZcsco7U3adJEP/zwgyZMmKBq1aopJCSkwG3JufU/JSVF7733nqKionTzzTfr008/dVp/4bR3716VK1dOFStWlHT+S5jRo0dr2bJlat++vSZNmqShQ4fqmWeeUbt27Ryjg18oJ/Dedtttl30cI2cQtbxC9+zZs9W1a1eXwurq1at1/fXX69FHH1VcXJymTp3qtH7w4MFOV6ufeeYZbdy4Uf/4xz+UlZUlm83m6NPly5eXl5eXY/7iNxFc7LffftPYsWN155135jl44NGjR11+1Vx6enq+63O++Kpbt64k5Xp/OgBAkgEAlBjBwcFGUqGmo0ePOh1r+/bt5sEHHzSSTFBQkJk3b16+ZX/77bemQoUKRpKJiooyn376qTlz5owxxpixY8caT09Pc+LECcf2qampZteuXSYwMNC89957xhhj+vbta7y8vIwk89prr5kTJ06YihUrmkaNGpn4+PhcZd57773mnnvucVr20EMPXbatzz//vGP7xx57zAQGBpqEhATTpUsXI8k0bNjQrFu3zmRlZRXo/BtjzDfffGM8PT2Nj4+PKVeunJFk7rjjDvPbb7+Z7Oxsl45R0HLtdrv54IMPTL169UxAQIC54YYbzIwZM3KVJ8l07979ssf773//a+rVq+c4XzVq1DC//vqr0zYbNmww06dPd8wfP37ctG3b1lSuXNksWbKkQPXPsWvXLvPSSy+ZChUqmGuuucbMnTvXGHO+b0kycXFxxhhjNm7caJ555hnTo0cP4+fnZ7p06ZLrWN9++61p0aKFCQwMNHXq1DFDhgwxycnJeZY7Y8YMI8l88cUXJjY2Nt/p/vvvN5LM8ePHc50zSWbBggWOZXa73Rw7dsy0atXKdOjQwRhjzFdffWUkGS8vL9OpUyeTkJBg2rdvbwIDA83mzZtz1W3cuHEmICDAadmUKVMu28ebNGmSZ1t//PFHExwcbKpXr24OHz6ca31KSoqpVKlSrs/VpXz//femfv365s8//3Qs+/e//20kmU2bNhljjLn77rtN+/btzbhx4wr1mQKA0o5nugGgBMm5Cufr6+vS89zS/97TfeFt0jNmzFDfvn1ls9nUvXt3jR492nGl6lJ69Oihm2++We+//76+/PJLValSRf369ZPdbteYMWPUtm1bx3O1qampatCggeNZ6RtvvFHZ2dlasWKFPD09NWPGDMdtr1988YXuu+8+zZgxI9eo2Onp6bmu6qenp+v222/XrFmz8qxnZGSko61//vmn5syZowcffFDBwcFavHixJk2apGHDhqlVq1YKDg5WkyZNVLNmTcdgVVlZWcrKypLdbtfp06d16tQpPfDAAxo0aJAWLlyo3r17q1KlSlqzZo2qVKmit956S5MnT9bPP/+sSpUqqXXr1qpatapCQ0NljFFmZqaSk5N15swZHT58WIcPH9a2bdvyHLTsUnx8fDRkyBANGTIk3+2M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zWaTzWZTjx49tGXLFu3YsUNJSUnauHGjatWqpdatW+udd96xut4AAAAAAFz1XArdP//8s+bPn6/s7Gx5e3vrzjvv1Lx585y2uemmmzR58mStXr1akydP1rPPPmtJhQEAAAAAKClcCt0BAQG699579a9//UuHDh3Svffeq6eeekq33nprrleGtWrVSsuWLdOsWbP06aefWlJpAAAAAABKggKPXl6xYkWNGjVKsbGxatKkiSpWrKjTp087bRMZGalhw4bp1Vdf1V9//VVklQUAAAAAoCQpcOjes2ePoqKiFBsbq0mTJunYsWNq2LChHnroIR0+fNix3cCBA3XttdfmuhIOAAAAAEBZUaDQPW/ePN10001KTk5WUFCQJKlKlSqaMmWK/vrrL9WvX1/vvfee0tLS5O3trU2bNqlVq1aWVBwAAAAAgKudy6F79OjRevjhh9WnTx9t3rxZN998s2Nd9+7dtXnzZn3xxRf67LPPdN1112nOnDny9va2pNIAAAAAAJQENmOMcWXDP//8Uxs2bFCfPn3y3S45OVlPPPGEfvvtN23dulVVq1YtkormJSkpScHBwUpMTHRceQdKF1sxlZPza6C4yyuuMou7vIvLLOVsxXROXfvnCgAAoFi4mkddDt0FdeDAAdWsWdOKQzsQulH6EbpLZnkXl1nKEboBAEAZ5GoeLfBAaq6yOnADAAAAAHC1syx0AwAAAABQ1hG6AQAAAACwCKEbAAAAAACLELoBAAAAALAIoRsAAAAAAIsQugEAAAAAsAihGwAAAAAAixC6AQAAAACwCKEbAAAAAACLELoBAAAAALAIoRsAAAAAAIsQugEAAAAAsAihGwAAAAAAixC6AQAAAACwCKEbAAAAAACLELoBAAAAALAIoRsAAAAAAIsQugEAAAAAsAihGwAAAAAAixC6AQAAAACwCKEbAAAAAACLELoBAAAAALAIoRsAAAAAAIsQugEAAAAAsAihGwAAAAAAixC6AQAAAACwCKEbAAAAAACLELoBAAAAALAIoRsAAAAAAIsQulFkoqOjFRkZqZCQEA0ePFjGmMvuM3/+fNWqVUvVqlXT3Llzc61PSUlRnTp1tGDBAiuqXGBloY0oevQbAACAsovQjSJht9vVtWtXNW/eXBs3blRMTIxmzZqV7z7R0dHq3bu33nrrLa1YsUJvv/22du/e7bTNsGHDdO2116p79+4W1t41ZaGNKHr0GwAAgLLNZly55HKVSkpKUnBwsBITExUUFOTu6pRp3333nZ588kkdOnRIAQEB2rZtm5577jn9/vvvl9znpZde0q5du/Tjjz9KkiZOnKiTJ09q+PDhkqRt27apdevW2rx5s+rXr18s7ciPe9pos6Ipecj5NVDc5RVXmcVd3v/KLAufDdmK6ZyW3H+uAABAKeRqHuVKN4rEtm3bFBUVpYCAAElS06ZNFRMTc9l9OnTo4Jhv2bKlNm3aJEkyxqhfv35q3bq11q1bp23btllXeReVhTai6NFvAAAAyjZCN4pEUlKSIiIiHPM2m02enp6Kj493eZ+goCAdOXJEkvTNN99ow4YNuuaaa7R7927dfffdGjt2rHUNcEFZaCOKHv0GAACgbPNydwVQOnh5ecnX19dpmZ+fn1JSUhQSEuLSPjnbS9K0adPUs2dPzZkzR5LUpUsXdejQQf3791f58uUtakX+ykIbUfToNwAAAGUbV7pRJEJDQ3Xy5EmnZcnJyfLx8XF5nwu3P3TokLp06eJYd9NNNyk9PV0HDx4s4pq7riy0EUWPfgMAAFC2EbpRJCIjI7Vu3TrHfFxcnOx2u0JDQ13eZ8uWLapevbokqUaNGkpNTXWs279/v2w2m6pWrWpB7V1TFtqIoke/AQAAKNsI3SgSt956q5KSkjRz5kxJ0ogRI9SxY0d5enoqISFBWVlZufbp3r27/vWvf2nHjh06e/asPv74Y915552SpF69emns2LHasGGD/vrrL73wwgu6++67L3k7bnEoC21E0aPfAAAAlHHmKhEfH2/++OMPc+bMGZf3SUxMNJJMYmKihTWDqxYvXmwCAgJMWFiYqVSpktm5c6cxxhhJZsuWLXnuM2TIEOPj42OCgoJM8+bNTUpKijHGmOzsbDNixAhTs2ZN4+/vbzp16mSOHj1aXE25pOJvo4ppcld5xVWmO89pGfhsnH+Zl/UTAADAVcTVPHpVvKf722+/1dNPP63w8HD9/fffmjVrlnr27HnZ/XhP99Xn2LFj2rRpk6KiohQWFubSPjExMTp8+LDatWuX73OuV4vibSPv6S6Z5V1cZin/bPCebgAAUAa5mkfdHroTExN17bXX6pdfflHTpk01a9YsDRs2TPv27bvsvoRulH6E7pJZ3sVllnKEbgAAUAa5mkfd/kx3UlKSJkyYoKZNm0o6PxLv6dOn3VwrAAAAAACunNtDd3h4uHr37i1JysjI0Pjx49WtWzc31woAAAAAgCvn5e4K5Ni2bZs6dOggHx8fxcbG5rmN3W6X3W53zCclJRVX9QAAAAAAKDC3X+nO0bRpU/3000+qV6+e+vbtm+c2I0eOVHBwsGMKDw8v5loif7ZimtyptLcPRc5mK54JAAAAVyW3D6R2sbi4ONWtW1dnzpxRhQoVnNbldaU7PDycgdSuGmVhgKrSPugXA6kVeZllYZCxstBGAACAi5SYgdR+/fVXDR482DHv4+Mjm80mD4/cVfP19VVQUJDTBAAAAADA1crtz3Rfd911mjZtmurVq6e7775bb775pjp16kSgBgAAAACUeG6/0l21alXNnz9fEydO1PXXX6+UlBR9+eWX7q4WAAAAAABXzO1XuiXpjjvu0M6dO91dDQAAAAAAipTbr3QDAAAAAFBaEboBAAAAALAIoRsAAAAAAIsQugEAAAAAsAihGwAAAAAAixC6AQAAAACwCKEbAAAAAACLELoBAAAAALAIoRsAAAAAAIsQugEAAAAAsAihGwAAAAAAixC6AQAAAACwCKEbAAAAAACLELoBAAAAALAIoRsAAAAAAIsQugEAAAAAsAihGwAAAAAAixC6AQAAAACwCKEbAAAAAACLELoBAAAAALAIoRsAAAAAAIsQugEAAAAAsAihGwAAAAAAixC6AQAAAACwCKEbAAAAAACLELoBAAAAALAIoRsAAAAAAIsQugEAAAAAsAihGwAAAAAAixC6AQAAAACwCKEbAAAAAACLELoBAAAAALAIoRsAAAAAAIsQugEAAAAAsAihGwAAAAAAixC6AQAAAACwCKEbAAAAAACLELoBAAAAALAIoRsAAAAAAIsQugEAAAAAsAihGwAAAAAAixC6AQAAAACwCKEbAIDLiI6OVmRkpEJCQjR48GAZYy67z/z581WrVi1Vq1ZNc+fOzXObv//+WwEBAUVdXVxCcf8c6TcoDPoNUPoQugEAyIfdblfXrl3VvHlzbdy4UTExMZo1a1a++0RHR6t379566623tGLFCr399tvavXt3ru369++v1NRUi2qOCxX3z5F+g8Kg3wCllCnBEhMTjSSTmJjo7qrAGGOMimlyp+JuX3GfU3f8DEtjeReUKRXP5E6lvI2LFi0yISEh5ty5c8YY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uH8PuuP3bmlvI+e05JfnjjJLe3nuQBtRGJzTolcCzmlODr3c49FuD91JSUmKiIhwzNtsNnl6eio+Pl4hISFO244cOVLvvvturmOEh4dbXs+SI7iUl+eOMkt7ee4os7SX54Yyg0t5ee4os7SX544yS3t57iiztJfnDrQRhcE5LXol6JwmJycrOJ/6uj10e3l5ydfX12mZn5+fUlJScoXuN954QwMHDnTMZ2dn68yZMwoLC5PNZiuyOiUlJSk8PFwHDx5UUFBQkR0XJRd9AhejT+BC9AdcjD6Bi9EncCH6Q+lgjFFycrKqVauW73ZuD92hoaGKjo52WpacnCwfH59c2/r6+uYK6BUqVLCsbkFBQXwI4IQ+gYvRJ3Ah+gMuRp/AxegTuBD9oeTL7wp3DrcPpBYZGal169Y55uPi4mS32xUaGurGWgEAAAAAcOXcHrpvvfVWJSUlaebMmZKkESNGqGPHjvL09HRzzQAAAAAAuDJuv73cy8tL06dPV69evTR48GB5eHho9erVbq2Tr6+v3nnnnVy3sqPsok/gYvQJXIj+gIvRJ3Ax+gQuRH8oW2zmcuObF5Njx45p06ZNioqKUlhYmLurAwAAAADAFbtqQjcAAAAAAKWN25/pBgAAAACgtCJ0AwAAAABgEUK3i+666y7NmjXL3dWAGy1evFh16tSRl5eXmjVrptjYWHdXCW4SHR2tyMhIhYSEaPDgweIpnbKN3w3ID38/4EKvvfaaunbt6u5qwM2mT5+u8PBwBQQEqH379vr777/dXSVYjNDtgjlz5mjFihXurgbcaO/evXriiSc0atQoHT58WNddd5369u3r7mrBDex2u7p27armzZtr48aNiomJ4Q/qMozfDcgPfz/gQtu3b9fkyZM1ceJEd1cFbrR371699957Wrx4sXbt2qW6devq8ccfd3e1YDFC92WcOXNGgwYNUv369d1dFbhRbGysRo0apQcffFCVK1fWs88+qy1btri7WnCD5cuXKzExUePGjVPdunU1YsQIzZgxw93VgpvwuwGXwt8PuFB2drb69eunl19+WXXq1HF3deBGW7ZsUVRUlG666SbVrFlTTz75pPbs2ePuasFibn9P99Vu0KBB6tatm1JTU91dFbhRly5dnOZ3796tevXquak2cKdt27YpKipKAQEBkqSmTZsqJibGzbWCu/C7AZfC3w+4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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import akshare as ak\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import MaxNLocator\n",
    "\n",
    "# 参数：跌幅阈值\n",
    "drop_threshold = 0.03  # 表示4%\n",
    "n_day_offset = 2  # 偏移2日作为例子\n",
    "n_day_label = n_day_offset + 1  # 计算第n_day_offset+1日\n",
    "\n",
    "# 设置开始时间为2015年1月1日\n",
    "start_date = '2007-01-01'\n",
    "start_date = pd.to_datetime(start_date)\n",
    "\n",
    "# 获取上证指数历史数据\n",
    "index_data = ak.stock_hk_index_daily_sina(symbol=\"CES100\")\n",
    "index_data['date'] = pd.to_datetime(index_data['date'])\n",
    "\n",
    "# 筛选数据：从开始时间到现在的数据\n",
    "index_data = index_data[index_data['date'] >= start_date]\n",
    "index_data.sort_values('date', inplace=True)\n",
    "index_data.reset_index(drop=True, inplace=True)\n",
    "\n",
    "# 添加每日涨跌幅（单位：百分比）\n",
    "index_data['涨跌幅'] = index_data['close'].pct_change()\n",
    "\n",
    "# 剔除涨幅数据为NaN的行\n",
    "index_data = index_data.dropna(subset=['涨跌幅'])\n",
    "\n",
    "# 添加次日高开/低开 和 涨/跌 标识\n",
    "index_data['次日开盘-当日开盘'] = index_data['open'].shift(-1) - index_data['open']\n",
    "index_data['次日是否高开'] = index_data['次日开盘-当日开盘'].apply(lambda x: '高开' if x > 0 else '低开')\n",
    "\n",
    "index_data['次日收盘-当日收盘'] = index_data['close'].shift(-1) - index_data['close']\n",
    "index_data['次日是否上涨'] = index_data['次日收盘-当日收盘'].apply(lambda x: '上涨' if x > 0 else '下跌')\n",
    "\n",
    "# 添加第n_day_offset + 1日高开/低开 和 涨/跌 标识\n",
    "index_data[f'第{n_day_label}日开盘-当日开盘'] = index_data['open'].shift(-n_day_offset) - index_data['open']\n",
    "index_data[f'第{n_day_label}日是否高开'] = index_data[f'第{n_day_label}日开盘-当日开盘'].apply(lambda x: '高开' if x > 0 else '低开')\n",
    "\n",
    "index_data[f'第{n_day_label}日收盘-当日收盘'] = index_data['close'].shift(-n_day_offset) - index_data['close']\n",
    "index_data[f'第{n_day_label}日是否上涨'] = index_data[f'第{n_day_label}日收盘-当日收盘'].apply(lambda x: '上涨' if x > 0 else '下跌')\n",
    "\n",
    "# 计算第n_day_label日之后的涨幅\n",
    "index_data[f'第{n_day_label}日涨幅'] = index_data['close'].shift(-n_day_offset) / index_data['close'] - 1\n",
    "\n",
    "# 找出跌幅超过阈值的那天，以及其次日、第n_day_label日、第n_day_label日的数据\n",
    "drop_days = index_data[(index_data['涨跌幅'] <= -drop_threshold) if drop_threshold < 0 else (index_data['涨跌幅'] >= drop_threshold) ].copy()\n",
    "\n",
    "# 筛出原始数据中这些次日、第n_day_label日、第n_day_label日对应的表现\n",
    "drop_result = index_data.loc[drop_days.index, [\n",
    "    'date', 'open', 'close', '涨跌幅',\n",
    "    '次日是否高开', '次日是否上涨',\n",
    "    f'第{n_day_label}日是否高开', f'第{n_day_label}日是否上涨',\n",
    "    f'第{n_day_label}日涨幅'\n",
    "]].copy()\n",
    "\n",
    "# 计算涨幅的分布并绘制柱状图\n",
    "drop_result[f'涨幅'] = drop_result[f'第{n_day_label}日涨幅'] * 100  # 转化为百分比\n",
    "\n",
    "# 计算总次数，用于计算概率\n",
    "total_count = len(drop_result)\n",
    "# 计算涨幅大于零的次数\n",
    "positive_count = len(drop_result[drop_result['涨幅'] > 0])\n",
    "\n",
    "# 打印总次数和涨幅大于零的次数和概率\n",
    "positive_probability = positive_count / total_count\n",
    "print(f\"总次数: {total_count}\")\n",
    "print(f\"涨幅大于零的次数: {positive_count}，概率: {positive_probability:.4f}\")\n",
    "\n",
    "# 绘制涨幅分布图（正态分布柱状图）\n",
    "fig, ax = plt.subplots(figsize=(10, 6))  # 设置图形的尺寸\n",
    "n, bins, patches = ax.hist(drop_result['涨幅'], bins=30, rwidth=0.9)\n",
    "\n",
    "# 计算y轴最大值的1.33倍，确保留出1/3的空间\n",
    "max_height = max(n)\n",
    "ax.set_ylim(0, max_height * 1.33)\n",
    "\n",
    "# 设置柱状图上的概率数字与柱状图顶部的间距\n",
    "probability_text_offset = 0.05  # 这个变量控制概率数字距离柱状图顶部的距离\n",
    "\n",
    "# 只对出现次数大于等于1的柱子进行标注\n",
    "for i in range(len(patches)):\n",
    "    # 获取柱状图的高度\n",
    "    height = patches[i].get_height()\n",
    "    # 获取柱状图的中心\n",
    "    x_position = patches[i].get_x() + patches[i].get_width() / 2\n",
    "    # 计算每个柱子对应的概率\n",
    "    if height >= 1:  # 只标注出现次数大于等于1的柱状图\n",
    "        probability = height / total_count\n",
    "        # 在柱子顶部添加文本，稍微调整使其贴近横线\n",
    "        ax.text(x_position, height + probability_text_offset, f'{probability:.2f}', ha='center', va='bottom', fontsize=10)\n",
    "\n",
    "    # 给柱状图着色，按照涨幅大于0、等于0、小于0的情况设置颜色\n",
    "    if height > 0:\n",
    "        if x_position < 0:  # 跨越零的情况\n",
    "            patches[i].set_facecolor('yellow')\n",
    "        else:  # 大于零\n",
    "            patches[i].set_facecolor('red')\n",
    "    elif height < 0:\n",
    "        patches[i].set_facecolor('green')\n",
    "\n",
    "# 设置图表标签\n",
    "ax.set_xlabel(\"涨幅 (%)\", fontsize=12)\n",
    "ax.set_ylabel(\"次数\", fontsize=12)\n",
    "ax.set_title(f\"当天{'跌' if drop_threshold < 0 else '涨'}幅超过 {drop_threshold*100:.1f}% 第{n_day_label}日涨幅分布\", fontsize=14)\n",
    "\n",
    "# 设置y轴为整数\n",
    "ax.yaxis.set_major_locator(MaxNLocator(integer=True))\n",
    "\n",
    "# 调整坐标图的布局，增加顶部和底部留白\n",
    "plt.subplots_adjust(top=0.85, bottom=0.1)\n",
    "\n",
    "# 显示图表\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
